#include <stdio.h>
#define SIZE 1024 * 1024 * 1 + 1024 * 100

int a1;
int a2;
int a3;

int *test()
{
    static int a = 10; // 静态数据 静态变量 test出栈后 静态数组还在
    printf("test == %p\n", &a);
    int c1, c2, c3; // 局部变量 随机值
    printf("test %d %d %d\n", c1, c2, c3);
    return &a;
}
int main()
{
    int b1, b2, b3; // 局部变量 随机值
    printf("main %d %d %d %d %d %d\n", a1, a2, a3, b1, b2, b3);

    int *ret = test();
    printf("res === %p\n", ret);

    // char buf[SIZE]; // 1字节 1024字节=1KB 1024KB=1MB
    // buf[SIZE - 1] = 100;

    // printf("buf[%d] = %d\n", SIZE - 1, buf[SIZE - 1]);

    // linux环境 栈空间 8MB   windows 栈空间 1MB
    return 0;
}

//  内核空间
//  栈空间（局部变量 函数）   空间小    函数运行时动态申请空间【入栈】 函数运行完成释放空间【出栈】
//  堆空间
//  数据段 （常量全局变量） .bss未初始化的静态数据,    .data已初始化的静态数据 .rodata常量
//  代码段 .text用户代码 .init系统初始化代码
//  不可访问段



